import streamlit as st
from openai import OpenAI
from dotenv import load_dotenv
import datetime

# 加载环境变量
load_dotenv()
client = OpenAI(
api_key="xk-349774cce86e12913221634fbb69b071ec05e8c01d6d9d45",
base_url="https://openai.zhixueyouke.cn/v1/"
)

# 全局变量用于保存历史记录
if "history" not in st.session_state:
    st.session_state["history"] = []


# 定义大模型辅导函数
def coach_student(qa1, qa2, qa3, qa4, qa5, model="gpt-3.5-turbo"):
    instruction = """
    你是一位专业的大模型辅导老师，为学员提供个性化的学习建议，帮助他们更好地掌握大模型知识和技能。
    请回答的时候不要过多描述，言简意赅。
    """
    examples = """
        # 示例1
        Q：您现在在那个城市，是否在职，所从事的工作是什么？
        A：北京，在实习，算法工程师实习
        Q：对大模型有多少认知，了解多少原理与技术点？
        A：大模型应用到的基础深度学习知识都知道，cv方面比较熟悉，nlp方面不熟悉。常见的一些大模型相关术语了解，但不深入。
        Q：学习大模型的最核心需求是什么？
        A：目前工作需要用大模型进行训练，需要微调然后部署
        Q：是否有python编程基础或者其他编程基础，有没有写过代码？
        A：有Python基础，能看懂代码，但直接编写代码不熟练
        Q：每天能花多少时间用于学习，大致空闲时间点处于什么时段?
        A：周内中午12到2点，晚上9到11点。周末全天。
        Q：除以上五点外是否还有其他问题想要补充。如有请按照如下格式进行补充
        主要需要学习多模态大模型。纯nlp大模型不太需要。


        回复:作为一名在北京实习的算法工程师，对大模型在基础深度学习方面有一定的了解，
        对于计算机视觉（CV）领域比较熟悉，但在自然语言处理（NLP）方面还比较浅。
        使用大模型进行训练、微调并部署，这是你学习大模型的核心需求。你有 Python
        基础，能够理解代码，这对于大模型学习是个很好的基础，因为大模型使用到的
        主要编程语言就是 Python。你每天基本上都可以安排大约 3 个小时的学习时间，
        这样的安排有利于系统地学习以及去进行实践。此外，你主要需要学习多模态大
        模型，这使得你的学习更加有针对性。国内现在 AI 领域虽然处于起步阶段，但
        随着人工智能技术的快速发展，其应用前景非常广阔，凭借你的编程基础和明确
        的学习目标，转型为高效的 AI 工程师是完全可行的


        # 示例2
        Q：您现在在那个城市，是否在职，所从事的工作是什么？
        A：北京，在职，农业相关
        Q：对大模型有多少认知，了解多少原理与技术点？
        A：比较浅薄
        Q：学习大模型的最核心需求是什么？
        A：个人能力提升和业务需要
        Q：是否有python编程基础或者其他编程基础，有没有写过代码？
        A：有
        Q：每天能花多少时间用于学习，大致空闲时间点处于什么时段?
        A：3个小时左右，晚上18点以后
        Q：除以上五点外是否还有其他问题想要补充。如有请按照如下格式进行补充

        回复:作为在北京从事农业相关工作的同学，虽然你对大模型的认知程度比较浅，但你
        拥有 Python 编程基础并且写过代码，这对于学习大模型来说是很好的条件，因
        为 Python 是学习大模型的主要语言。推荐你看一下我们提供的预习课程来补充
        一下知识体系。个人能力提升和业务需要符合当前 AI 在农业领域的发展趋势。
        每天在晚上 18 点以后可以安排约 3 个小时的学习时间，这样的时间安排非常充
        裕。凭借你的编程背景和学习投入，转型为 AI 项目管理是可行的，国内现在 AI
        领域虽然处于起步阶段，但随着人工智能技术的快速发展，其应用前景非常广阔，
        现在正是学习并把握行业发展机遇的好时机。
    """

    user_input = f"""
    Q：您现在在那个城市，是否在职，所从事的工作是什么？
    A：{qa1}
    Q：对大模型有多少认知，了解多少原理与技术点？
    A：{qa2}
    Q：学习大模型的最核心需求是什么？
    A：{qa3}
    Q：是否有python编程基础或者其他编程基础，有没有写过代码？
    A：{qa4}
    Q：每天能花多少时间用于学习，大致空闲时间点处于什么时段?
    A：{qa5}
    """
    prompt = f"""
        {instruction}
        {examples}
        用户输入：
        {user_input}
    """
    messages = [{"role": "user", "content": prompt}]
    response = client.chat.completions.create(
        model=model,
        messages=messages,
        temperature=0,
        n=1
    )
    return response.choices[0].message.content


# Streamlit 界面设计
st.set_page_config(page_title="学习辅导系统", layout="wide", initial_sidebar_state="expanded")

# 添加自定义样式
# st.markdown("""
#     <style>
#     body {
#         background-color: #f5faff;
#     }
#     .stSidebar {
#
#         background-color: #eaf3ff;
#         border-right: 1px solid #c7e0ff;
#     }
#     .menu-button {
#          width:240px;
#         background-color: #4c8bf5;
#         color: white;
#         padding: 10px;
#         margin-bottom: 10px;
#         text-align: center;
#         border-radius: 5px;
#         cursor: pointer;
#         font-size: 14px;
#         font-weight: bold;
#     }
#     .menu-button:hover {
#         background-color: #3a6fbd;
#     }
#     </style>
# """, unsafe_allow_html=True)

# 侧边栏布局
with st.sidebar:
    st.image("./assets/favicon.ico", width=50)  # 显示 logo
    st.markdown("### 📌 功能菜单")

    # 自定义按钮样式实现页面切换
    selected_page = st.radio(
        "选择页面",
        ["辅导系统","学习资源","关于我们"]
    )

# 主页面内容
if selected_page == "辅导系统":
    st.title("🌟 学习辅导系统")
    st.caption("作者：何双新 ｜ 功能：学习辅导系统")
    st.markdown("请回答以下问题以便我们提供个性化学习建议：")

    # 输入区域
    qa1 = st.text_input("1. 您现在在那个城市，是否在职，所从事的工作是什么？")
    qa2 = st.text_input("2. 对大模型有多少认知，了解多少原理与技术点？")
    qa3 = st.text_input("3. 学习大模型的最核心需求是什么？")
    qa4 = st.text_input("4. 是否有 Python 编程基础或者其他编程基础，有没有写过代码？")
    qa5 = st.text_input("5. 每天能花多少时间用于学习，大致空闲时间点处于什么时段？")

    # 提交按钮
    if st.button("提交并获取建议"):
        with st.spinner("正在生成辅导建议，请稍候..."):
            try:
                result = coach_student(qa1, qa2, qa3, qa4, qa5)
                timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                st.session_state["history"].append({"time": timestamp, "result": result})
                st.markdown("### 🎓 辅导建议")
                st.success(result)
            except Exception as e:
                st.error(f"生成建议时出错：{e}")

    # 历史记录
    st.markdown("---")
    st.markdown("### ⏳ 历史记录")
    if st.session_state["history"]:
        for record in st.session_state["history"]:
            st.markdown(f"**时间：{record['time']}**")
            st.text_area("建议内容", record["result"], height=100, key=record["time"])
    else:
        st.info("暂无历史记录")

elif selected_page == "关于我们":
    st.title("关于我们")
    st.markdown("""
## 公司简介  
安徽智加数字科技有限公司，致力于成为领先的**企业数字化与智能化转型赋能者**。  
我们专注于融合最新的大模型（LLM）与人工智能技术，面向不同行业客户，提供高效、定制化的软件开发与数字解决方案，助力企业迈向智能时代。

智加科技以“**数字赋能，智启未来**”为使命，围绕企业核心业务场景，打造涵盖数字化咨询、智能应用开发、数据中台建设、企业软件定制与办公自动化等在内的一站式服务体系，
助力客户在新时代中抢占先机、赢得未来。

---

## 我们的使命
> 让每一家企业，都能高效拥有数字智能的力量。

---

## 核心价值观
- **专业为本**：以深厚的技术积累，提供高品质、高可靠性的产品与服务。
- **创新驱动**：紧跟人工智能、大数据、云计算等前沿技术，不断创新、持续进步。
- **客户至上**：以客户需求为导向，量身定制最佳解决方案，实现合作共赢。
- **诚信共赢**：以诚信为基石，与客户、员工、合作伙伴共创价值、共享成长。

---

## 我们的优势
- **大模型技术融合**  
  深度应用GPT、LLaMA、Claude等大型语言模型，加速智能应用落地。
- **丰富项目经验**  
  覆盖制造、教育、养老等多个行业，积累大量成功案例。
- **一站式服务体系**  
  覆盖咨询、开发、实施、运维全流程，陪伴客户每一个数字化升级阶段。
- **敏捷灵活交付**  
  采用敏捷开发模式，快速响应变化需求，确保项目高效落地。

---

## 发展愿景
成为国内领先、国际知名的数字科技创新企业，以技术创新推动产业升级，以智能服务创造商业新价值。

---

## 联系我们
- 公司地址：安徽省合肥市
- 联系电话：13655699934
- 企业邮箱：13655699934@163.com
- 官方网站：www.zdtcloud.com

---
    """)

elif selected_page == "学习资源":
    st.title("学习资源")
    st.markdown("""
    以下是一些推荐的学习资源：
    - [Python 编程基础](https://www.python.org)
    - [机器学习与深度学习](https://www.coursera.org)
    - [大模型技术](https://huggingface.co)
    - [PyTorch 官方教程](https://pytorch.org/tutorials/)
    - [TensorFlow 官方文档](https://www.tensorflow.org/tutorials)
    - [FastAI 深度学习课程](https://course.fast.ai/)
    - [Kaggle 机器学习竞赛平台](https://www.kaggle.com/learn)
    - [Stanford CS231n: Convolutional Neural Networks for Visual Recognition](http://cs231n.stanford.edu/)
    - [DeepLearning.AI 深度学习课程](https://www.deeplearning.ai/)
    - [OpenAI Research](https://openai.com/research)
    """)

